1. Field of the Invention
The present invention relates to improvements in data processing systems and, more particularly, to a packaging algorithm for object oriented application development software which permits object oriented applications to be packaged without including extraneous classes or methods.
2. Description of the Related Art
The use of object oriented languages for writing or developing software applications has been gaining popularity in recent years. Object oriented technology has several advantages over procedural language technology, including relative ease of use, ease of modification, superior potential for reusability of components from application to application, etc. Object oriented software applications are typically developed by a software developer using an object oriented development environment. An object oriented development environment (such as VisualAge for Smalltalk from the IBM Corporation) typically includes the object oriented language, such as Smalltalk or C++, a variety of development tools, such as browsers, version management capabilities, and debuggers, and a set of reusable object oriented classes, components, parts and/or frameworks which provide different functions which a developer may desire for an application. The Smalltalk language includes an underlying engine known as the virtual machine which includes base functionality required to execute finished applications on a computer (and is typically packaged with applications), as well as a rich set of reusable object oriented classes, components, parts and frameworks. A developer basically pulls together instances of desired classes (objects) from the available classes, components, parts, and frameworks in order to create an application having desired function.
One aspect of object oriented languages is that the classes are typically interdependent and may possess a characteristic known as inheritance. Also, function is typically provided in that portion of an object known as a method. Thus, a method for one particular object may rely on a method in a different object or class to provide function. This characteristic of object oriented languages provides challenges to packaging schemes that seek efficiency.
To date, packaging of finished applications has never been an exact science. To be on the safe side, applications are packaged with complete standard class libraries with minimal discrimination together with the underlying engine to produce a run-time version of the application which can be executed by the computers of end-users. One drawback in object oriented languages has been that in order to make sure the application executes properly, packaging algorithms of the prior art have not been very discriminatory in which classes they include from the reusable class libraries in the development environment. Accordingly, the size of packaged object oriented applications has been relativey large, thereby placing large memory requirements on the end-user""s computer. Also, the relatively large size of the applications can result in slower than desired performance when the applications are executed.
Accordingly, a need exists for a packaging algorithm for use in for application development tools which more precisely selects classes from the development environment for inclusion in packaged applications, so as to reduce memory requirements and enhance performance.
Accordingly, an object of the present invention is to provide an enhanced packaging algorithm for reducing the memory requirements of applications.
Another object of the present invention is to provide an enhanced packaging algorithm which results in enhanced performance of applications packaged using the packaging algorithm.
Yet another object of the present invention is to provide a packaging algorithm for application development environments which includes only those methods and classes which are necessary for execution of the application.
Other objects and advantages of the present invention will be set forth in part in the description and the drawings which follow, and, in part, will be obvious from the description, or may be learned by practice of the invention.
To achieve the foregoing objects, and in accordance with the purpose of the invention as broadly described herein, computer readable code is provided for determining a set of code from a development environment required to execute an application, comprising first subprocesses for identifying a known component required to execute the application; second subprocesses for identifying components required by the known component for execution of the application; and third subprocesses for identifying components required by the components identified in the second subprocesses and the third subprocesses for execution.
The first subprocesses may permit a user to identify at least one known component, or may query a component of the application to identify itself and uses the identified component as the known component. The application may be an object oriented application under development, the computer readable code may further comprise fourth subprocesses for packaging the application to include only the known component and the identified components. Preferably, only a single instance of the identified components is included in the packaged application. The computer readable code may further comprise fifth subprocesses for identifying common components required to execute any application. The application may be an object oriented application comprising methods and classes, the known component being a method, wherein the second subprocesses further comprise identifying methods and classes referenced by the known method.
Additionally, the present invention provides a system in a computing environment for determining a required set of components from an application development environment for an application being created, comprising means for identifying a first component required to execute the application; means for identifying a first set of components referenced by name or required by the first component for inclusion in the application; and means for identifying a second set of components referenced by name or otherwise required by individual components of the first second set of components and by individual ones of the second set of components after the individual ones are identified for inclusion in the application; and means for creating a list of required components from the first component, the first set of components and the second set of components. The system may further comprise means for including each of the required components only once on the list.
The present invention will now be described with reference to the following drawings, in which like reference numbers denote the same element throughout.